package com.jl15988.chainlog.callback;

import com.jl15988.chainlog.model.ChainApiLog;
import com.jl15988.chainlog.model.ChainMethodLog;

/**
 * 链式监控回调接口
 */
public interface ChainMethodCallback {

    /**
     * 完成后的回调处理
     *
     * @param chainMethodLog       方法链信息
     * @param chainApiLog          接口链信息
     * @param parentChainMethodLog 上级链式监控信息（可能为null）
     */
    void onChainComplete(ChainMethodLog chainMethodLog, ChainApiLog chainApiLog, ChainMethodLog parentChainMethodLog);

    /**
     * 异常时的回调处理
     *
     * @param chainMethodLog       方法链信息
     * @param chainApiLog          接口链信息
     * @param parentChainMethodLog 上级链信息（可能为null）
     * @param exception            异常信息
     */
    default void onChainException(ChainMethodLog chainMethodLog, ChainApiLog chainApiLog,
                                  ChainMethodLog parentChainMethodLog, Throwable exception) {
        // 默认实现为空，子类可选择性重写
    }
}